我們用 SMART——Specific(具體)、Measurable(可衡量)、Achievable(可達成)、Relevant(具關聯)、Time-bound(有時限)——把每個故事拆成五天,作為每次動手造輪子前的五個檢查問題。
本篇是回顧總結的「工具」篇:動手之前的三十分鐘,要照哪些欄位問完哪些問題?
本篇定位:把整個系列收斂成可立即使用的檢查表。
決策梯排出來之後,我做了一個事後諸葛的思想實驗:回到五個故事的第一天,動手之前強制暫停三十分鐘,照一張固定的表把欄位填完。用表上的欄位重跑一次,每個故事各卡在一格:
五台破輪子,沒有一台活得過第一天的三十分鐘。這些問題一點都不深刻,當時缺的只是把它們問出口的機制。
同樣一組問題,第一天問,成本是三十分鐘;第三個月問,成本是三個月,外加一場沒有人想開的檢討會。原因不神祕:程式碼一旦開始累積,沉沒成本就開始說話,自尊也跟著押上桌,之後每一次檢討都往繼續錯下去的方向傾斜。五個故事共同的結構,其實不是沒有人發現問題,而是等到有人說出口時,大家已經捨不得回頭。
所以盤點必須發生在第一行程式之前。那是所有人都還沒有立場要守的時刻,也是「不知道」三個字最容易說出口的時刻。
輪子盤點表,五個區塊、二十個欄位,一頁寫完,時間盒三十分鐘。每個區塊要處理的事,兩句話講完:
一、問題。 這一區擋的是方案跑在需求前面:使用者是誰、他卡在哪一件事、卡點落在哪一層。有一條規則要寫死:倉庫裡剛好有的零件、手邊剛好熟的框架,只能填進成本條件,不能填進問題欄。
二、現有能力。 先問世界上有沒有人解過,再問我們自己有沒有解過。這一區最誠實的一題是「這是現有方案做不到,還是我們還沒學會」,它逼出來的答案,常常只是「文件我們還沒讀完」。
三、最小解法。 沿著決策梯由上往下走一遍,每一級都問一次能不能收工。這一區的關鍵字是「最小」,不是「最好」。
四、成本與責任。 這一區處理第一版之後的事:誰維護、誰接手、怎麼回退。填不出名字的欄位,日後也不會自己長出名字。
五、時間與停止條件。 什麼時候該看到第一個可驗證結果,什麼證據一出現就停手。這一區是五個故事各自的 Time-bound 收尾濃縮成四行。
表可以直接抄成下面這張,貼進工單或提案裡填:
| 區塊 | 問題 | 答案 | 證據來源 |
|---|---|---|---|
| 問題 | 真正的使用者是誰? | ||
| 問題 | 他現在無法完成哪一件事? | ||
| 問題 | 問題發生在功能、介面、文件、操作、效能、安全還是合規? | ||
| 現有能力 | 有沒有既有標準、SDK、工具、元件或平台? | ||
| 現有能力 | 團隊目前是否已有類似能力? | ||
| 現有能力 | 官方是否提供擴充方式? | ||
| 現有能力 | 這是現有方案做不到,還是我們還沒學會? | ||
| 最小解法 | 能否透過設定解決? | ||
| 最小解法 | 能否補文件、範例或測試工具? | ||
| 最小解法 | 能否建立薄型轉接層? | ||
| 最小解法 | 真的需要修改原有方案的核心語意嗎? | ||
| 最小解法 | 有沒有能快速證偽假設的 PoC? | ||
| 成本責任 | 誰負責開發、測試、部署、資安與維護? | ||
| 成本責任 | 版本升級與相容性如何處理? | ||
| 成本責任 | 原作者離開後誰能接手? | ||
| 成本責任 | 失敗時如何回退? | ||
| 停止條件 | 第一個可驗證結果何時出現? | ||
| 停止條件 | 技術探勘最多投入多久? | ||
| 停止條件 | 哪些證據代表應停止自研? | ||
| 停止條件 | 何時淘汰暫時方案? |
使用規則比表本身重要。
第一,三十分鐘要事先分配,否則一定全花在最好玩的那一區:問題八分鐘、現有能力八分鐘、最小解法八分鐘、成本與責任三分鐘、時間與停止條件三分鐘。前三區是判斷的主體,後兩區是簽名,快不代表不重要。
第二,時間到就停。超時不算失敗,把還沒答出來的欄位原樣抄成一份風險清單附在提案後面:「不知道」寫出來永遠比留白誠實,一格沒有答案的欄位就是一個已經被標記的風險。
第三,填完的那一頁要附在工單或提案上。它同時是日後那份架構決策紀錄的草稿——第一天的答案,會是三個月後回顧時最有價值的證據。
第四,填表的目的不是得出「不要做」,而是讓決定「要做」的人,清楚知道自己簽了什麼。
這三十分鐘不是用來阻止工程師動手——動手永遠是這份工作最快樂的部分——而是避免整個團隊花三個月,證明第一天就問錯了問題。兩者差別在方向:一個用最貴的方式發現問題不成立,一個用最便宜的方式讓問題先站穩。
盤點表大多數時候會把人導回階梯上方那些便宜的選項。但總有一天,它會誠實地指向底端:缺口是真的,較小的選項都試過了,證據俱在。一套方法如果只推得出「永遠不要自研」,它自己就是一顆破輪子。那顆真的該造的輪子,動手之前還缺一份東西:一張寫著誰來養它的紙。那張紙上該有哪些欄位、誰有資格在上面簽名,是最後一道關卡。